Today's mobile computing devices, such as tablets and smartphones, are available in a wide variety of hardware and software platforms each having different operational requirements and form factors. Most of these devices provide software to enable users to connect to the internet and access various browser-based and/or native applications. Today's applications typically require the same test cases to be performed across multiple platforms and layouts, where each application often has slight variations in terms of appearance and function when executed on each device due to elements like screen size, user interface design, hardware profile, and so forth. As a result, the ability for application developers to quickly and efficiently test such mobile applications across the spectrum of devices, platforms, and layouts—without much (if any) manual tester involvement—has become important.
In traditional testing frameworks, a group of test engineers (TEs) know the mobile application thoroughly and how to optimally test the application, and such engineers are increasingly responsible for writing automated test scripts. However, these engineers are typically not software programmers or developers that have experience writing software code in programming languages (e.g., Java, C++)—even though traditional software testing frameworks require such expertise. As a result, software engineers in test (SETs)—those have technical programming expertise to write test cases in a particular programming language—must be relied on to craft test cases for execution, e.g., by an automation engine against the various mobile device platforms. As a result, the test scripts generated by the SETs are generally not optimized for thoroughly testing the mobile application and such test scripts are not easily adaptable or modifiable for changing testing scenarios or requirements across multiple mobile device platforms.